﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using CapaNegocios;

namespace CapaUsuario
{
    public partial class FAgregarRepuestos : Form
    {
        private CentroReparacion cRep;
        private Presupuesto p;
        Dictionary<Repuesto, int> repuestosTemp;
        List<Repuesto> repuestosStock = new List<Repuesto>();

        public FAgregarRepuestos()
        {
            InitializeComponent();
        }

        public FAgregarRepuestos(CentroReparacion cR, Presupuesto presup)
        {
            InitializeComponent();
            cRep = cR;
            p = presup;
            repuestosTemp = new Dictionary<Repuesto, int>(p.Repuestos);
            repuestosStock = cR.getTodosRepuestos() ;

        }

        private void FAgregarRepuestos_Load(object sender, EventArgs e)
        {
            cargarListas();
        }

        public void cargarListas()
        {
            listPresup.Clear();
            listStock.Clear();
            try
            {
        //        foreach (Repuesto r in cRep.getTodosRepuestos())
                foreach (Repuesto r in repuestosStock)
                {
                    Repuesto repu = r;
                    listStock.Items.Add(new ListViewItem(new string[] {
                    r.Id.ToString(), r.Nombre, r.Stock.ToString()
                    }));
                }

            }
            catch (Exception ex1)
            {
                //Si no había stock, se controla la Excepcion
            }
            try
            {
                //foreach (KeyValuePair<Repuesto, int> r in p.Repuestos)
                foreach (KeyValuePair<Repuesto, int> r in repuestosTemp)
                {
                   listPresup.Items.Add(new ListViewItem(new string[] {
                   r.Key.Id.ToString(), r.Key.Nombre, r.Value.ToString(), r.Key.PrecioUnitario.ToString()
                    }));
                }
            }
            catch (Exception ex2)
            {
                //Si no había repuestos cargados en el presupuesto, se controla la Excepcion
            }
        }

        private void btnMas_Click(object sender, EventArgs e)
        {
            if (listStock.SelectedItems.Count > 0) // Si hay alguno seleccionado de la lista de Stock
            {
                //Usamos un temporal porque si se presiona Cancelar no hay que hacer los cambios
                // Las posiciones de la lista arrancan en el cero, asi que le sumamos uno para obtener el ID real
                int id = listStock.SelectedItems[0].Index+1;
                Repuesto repTemp = cRep.getRepuesto(id);
                //Agregamos al dictionary temporal
                if (repuestosTemp.ContainsKey(repTemp))
                {//si ya existe, sumamos a la cantidad
                    repTemp.subeStock();
                }
                else 
                {
                    repuestosTemp.Add(repTemp, 1);
                }
                repuestosStock[id].bajaStock();
                cargarListas();
                //listStock.RedrawItems(listStock.SelectedItems[0].Index, listStock.SelectedItems[0].Index, false);
                //listPresup.RedrawItems(listPresup.SelectedItems[0].Index, listPresup.SelectedItems[0].Index, false);
//listView1.RedrawItems(listView1.SelectedItems[0].Index, listView1.SelectedItems[0].Index, false);

            }

        }
     }

    }

